It is desirable that, when an information processing apparatus, such as a server, accesses an external storage device such as storage and reads data stored on the external storage device, the time taken to read data be reduced. Nonvolatile memory, such as a hard disk drive (HDD) or flash memory, is provided in the storage, and data is stored in the nonvolatile memory. The time taken to read data from nonvolatile memory is typically longer than that from volatile memory, such as dynamic random access memory (DRAM) or static random access memory (SRAM). For example, in negative-AND (NAND) flash memory, data is read on a per-page basis, and the time taken is, for example, about 50 μs to read data of one page.
As a way to reduce the time taken to read data from nonvolatile memory, a process called data prefetching or speculative reading of data is known. This data prefetching process is a way by which, for example, when a server reads some data from nonvolatile memory, the server also reads data predicted to be likely to be used later for operations and the like in the server and holds the data in volatile memory provided in the server. When data is held in advance in volatile memory through the data prefetching process, the server may use the data held in the volatile memory without reading data into nonvolatile memory, enabling the speed-up of operations to be attained. In specific processing of the data prefetching process, when a data read command that specifies a first address of nonvolatile memory is issued from a server, the server identifies a second address at which the data prefetching process is to be performed. A normal data read command with the first address at which data is to be read and a data prefetch command with the second address at which data is to be read are issued from the server to the storage. The storage executes the normal data read command and the data prefetch command and sends data read from the nonvolatile memory to the server.
In the data prefetching process, an algorithm called Look Ahead, for example, is known as a way to identify an address at which prefetching is to be performed. Look Ahead is a way to identify an address next to an address specified by a normal data read command, as an address at which the data prefetching process is to be performed.
As examples of related art techniques, Japanese Laid-open Patent Publication No. 2001-12589, Japanese Laid-open Patent Publication No. 2006-260067, and Japanese Laid-open Patent Publication No. 2010-191983 are known.